<?php
/*
 * [JINYUN!] (C)2001-2099 Jinyunweb.com
 * This is NOT a freeware, use is subject to license terms
 * $Id: 2017-12-13 03:39:35 apple $
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'display';
$tabs=array(
	array('op'=>'display','title'=>'服务商配置'),
	array('op'=>'list','title'=>'应用列表'),
);
if($_RQ['op']=='display'){
	$return=array();
	if($_RQ['postdata']){
		$post=get_postdata();
		if(!$post['groupid']){
			exi('必须绑定企业微信会员默认套餐','error');
		}
		if(!$post['corpid']){
			exi('必须设置企业微信服务商应用corpid','error');
		}
		if(!$post['provider_secret']){
			exi('必须设置企业微信服务商应用provider_secret','error');
		}
		core_setting('work_weixin',$post);
		exi('设置成功！');
	}
	$open=core_setting('work_weixin');
	if(!$open['token']){
		$open['token']=$open['token']?:random(30);
		$open['aeskey']=$open['aeskey']?:random(43);
		core_setting('work_weixin',$open);
	}
	$open['domain']=$_SERVER['HTTP_HOST'];
	$return['item']=$open;
	if(!$return['item']){
		$return['item']['token']=random(32);
	}
	$return['item']['url']=SITEROOT.'api/wxwork_api.php';
	$return['item']['authurl']=manage_url('core/user.login/wxwork_login/',true);
	$htmls=array(
		'type'=>'edit',
		'desc'=>'企业微信服务商配置',
		'tabs'=>$tabs,
		'edit'=>array(
					array('type'=>'tip','title'=>'[温馨提示]：本配置用于企业微信应用市场SAAS（https://open.work.weixin.qq.com/），对接后，客户在企业微信应用市场，购买应用后，可自动开通本平台的应用，实现一键登录！</br>【<red>注意事项</red>】：1、服务商平台-服务商信息-基本信息 里面的白名单IP（勿必填写，否则无法安装企业微信应用！）</br>[<red>概念区分必读</red>]:</br>企业微信分为两种：</br>1、企业微信服务商,登录地址（https://open.work.weixin.qq.com/）（提供第三方应用，发布到应用市场SAAS。供企业微信[客户]，安装使用！）本SAAS就是为了满足企业微信服务商，一键发布应用到企业微信的应用市场！</br>2、企业微信[客户]：登录地址（https://work.weixin.qq.com/）.主要是普通的企业微信客户，他们可以通过自建应用（进行参数绑定），也可以通过第三方应用的安装，来实现应用的使用！</br><red>下面所有参数只对企业微信服务商有效！请勿把企业微信客户的混淆过来！</red>'),
					array('type'=>'select','title'=>'企业微信会员默认套餐','name'=>'groupid','options'=>'groups', 'help'=>'企业微信产生的用户，将默认属于本套餐！'),
					//array('type'=>'href_url','title'=>'免登地址','name'=>'authurl','btntitle'=>'测试一下', 'help'=>'企业微信客户，访问本地址，实现免登录！','read'=>true),
					array('type'=>'copy','name'=>'domain','title'=>'授权域名','help'=>'填写不带http:// 或https:// 头，可信域名必须通过ICP备案验证,设置可信域名后支持应用的OAuth2授权、JSSDK调用等（企业微信--应用管理--登录授权--授权完成回调域名--完成域名归属验证）'),
					array('type'=>'copy','title'=>'系统事件接收URL','name'=>'url', 'help'=>'请将此参数填写至企业微信--通用开发参数','read'=>true),
					array('type'=>'copy','title'=>'令牌（Token）','name'=>'token','help'=>'复制到企业微信服务器商创建的应用（通用开发参数），保持一直！' ),
					array('type'=>'copy','title'=>'消息加解密密钥(EncodingAESKey)','name'=>'aeskey','help'=>'复制到企业微信服务器商创建的应用（通用开发参数），保持一直！' ),
					array('type'=>'string','title'=>'企业微信服务商应用corpid','name'=>'corpid','help'=>'（获取方法为：登录服务商管理后台->服务商信息->标准应用能力->通用开发参数，可以看到）！https://open.work.weixin.qq.com/'),
					array('type'=>'string','title'=>'企业微信服务商应用provider_secret','name'=>'provider_secret','help'=>'（获取方法为：登录服务商管理后台->服务商信息->标准应用能力->通用开发参数，可以看到）！https://open.work.weixin.qq.com/'),
		),
	);
	$return['groups']=pdo_getall('core_account_group',array(),array('id','title'));
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='list'){
	$params=array('opentype'=>'wxwork');
	if(!empty($_RQ['title'])){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	if(!empty($_RQ['type'])){
		$params['type']=intval($_RQ['type']);
		$return['params']['type']=intval($_RQ['type']);
	}
	if(!empty($_RQ['groupid'])){
		$params['groupid']=intval($_RQ['groupid']);
		$return['params']['groupid']=intval($_RQ['groupid']);
	}
	$pindex = max(1, intval($_RQ['page']));
	$psize = 10;
	$total='';
	$fields=array('id','pid','title','logo','tags','type','groupid','price','status','createtime','star','suite_id','isbindopen','tabletype');
	$list=pdo_getslice('core_open_plugin',$params,array($pindex,$psize),$total,$fields,'','star desc, id desc');
	if($list){
		foreach($list as &$item){
			$item['plugin_title']=pdo_getcolumn('core_plugins',array('id'=>$item['pid']),'title');
		}
	}	
	$return['list']=$list;
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$tip='[温馨提示]：发布应用步骤：1、在这先创建一个应用；2、查看配置开发参数；3、移步企业微信服务商后台https://open.work.weixin.qq.com/，创建应用，把第2步获得的参数填上；4、把企业微信服务商后台创建的应用参数，填到下面的《绑定应用参数》（<red>勿必绑定正确的应用参数，否则会提示服务器没相应！</red>）';
	$htmls=array(
		'type'=>'list',
		'tabs'=>$tabs,
		'list'=>array('data'=>'list','tip'=>$tip,'list'=>array(
			array('name'=>'star','title'=>'星数','type'=>'star','set'=>'star'),
			array('name'=>'id','title'=>'ID','type'=>'string'),
			array('name'=>'title','title'=>'应用名称','type'=>'string'),
			array('name'=>'logo','title'=>'应用LOGO','type'=>'image'),
			array('name'=>'tabletype','title'=>'应用端','type'=>'radio','options'=>'tabletype'),
			array('name'=>'plugin_title','title'=>'所属插件','type'=>'string'),
			array('name'=>'type','title'=>'应用类型','type'=>'radio','options'=>'types'),
			array('name'=>'groupid','title'=>'应用分类','type'=>'radio','options'=>'groups'),
			array('name'=>'price','title'=>'应用价格','type'=>'string'),
			array('name'=>'isbindopen','title'=>'是否已绑定','type'=>'radio','options'=>'isbindopen'),
		),'action'=>array(
			array('type'=>'modal','op'=>'bindkey','action'=>'system.work_weixin','title'=>'绑定应用参数'),
			array('type'=>'modal','op'=>'openkey','action'=>'system.work_weixin','title'=>'查看配置开发参数'),
		),'batch'=>array(
			array('type'=>'post','url'=>'core/system.work_weixin/upgoods/','title'=>'一键添加应用_Upgoods'),
		)),
		'search_one'=>array('name'=>'title','title'=>'应用名称'),
	);
	$return['htmls']=$htmls;
	$return['tabletype']=get_app_types();
	$return['types']=array('0'=>'普通应用','1'=>'通讯录应用');
	$return['isbindopen']=array('0'=>'未绑定','1'=>'已绑定');
	$return['groups']=array(
		'0'=>'客户关系',
		'1'=>'供应链管理',
		'2'=>'移动办公',
		'3'=>'团队协同',
		'4'=>'文化建设',
		'5'=>'企业培训',
		'6'=>'人力资源',
		'7'=>'财务报销',
		'8'=>'企业服务',
		'9'=>'表单流程',
		'10'=>'电子合同',
		'11'=>'家校沟通',
	);
	exi($return);
}
if($_RQ['op']=='edit'){
	$return=array();
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('core_open_plugin',array('id'=>$id));
	}else{
		$item=array('tabletype'=>'1');
	}
	$return['item']=$item;
	$htmls=array(
		'type'=>'edit',
		'post'=>'post',
		'tabs'=>$tabs,
		'edit_tab'=>true,
		'edit'=>array(
					array('name'=>'title','title'=>'应用名称','type'=>'string','must'=>true),
					array('name'=>'logo','title'=>'应用LOGO','type'=>'image'),
					array('name'=>'tabletype','title'=>'应用端','type'=>'radio','options'=>'tabletype'),
					array('name'=>'images','title'=>'应用展示','type'=>'images'),
					array('name'=>'desc','title'=>'应用描述','type'=>'string'),
					array('name'=>'pid','title'=>'所属插件','show'=>array('tabletype'=>1),'type'=>'select','option_title'=>'title','options'=>'plugins'),
					array('name'=>'pid','title'=>'所属插件','show'=>array('tabletype'=>4),'type'=>'select','option_title'=>'title','options'=>'wxapp'),
					array('name'=>'type','title'=>'应用类型','type'=>'radio','options'=>'types'),
					array('name'=>'groupid','title'=>'应用分类','type'=>'radio','options'=>'groups'),
					array('name1'=>'price','name2'=>'days','unit1'=>'元','unit2'=>'天','title'=>'价格/N天','type'=>'string_two'),
					
		)
	);
	$return['tabletype']=get_app_types();
	$return['plugins']=pdo_getall('core_plugins',array('hide'=>0,'style'=>1),array('id','title','style'),'id');
	$return['wxapp']=pdo_getall('core_wxapp',array('hide'=>0),array('id','title'),'id');
	$return['types']=array('0'=>'普通应用','1'=>'通讯录应用');
	$return['groups']=array(
		'0'=>'客户关系',
		'1'=>'供应链管理',
		'2'=>'移动办公',
		'3'=>'团队协同',
		'4'=>'文化建设',
		'5'=>'企业培训',
		'6'=>'人力资源',
		'7'=>'财务报销',
		'8'=>'企业服务',
		'9'=>'表单流程',
		'10'=>'电子合同',
		'11'=>'家校沟通',
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='post'){
	$postdata=get_postdata();
	if(!$postdata['title']){
		exi('标题不能为空','error');
	}
	if(!$postdata['pid']){
		exi('必须绑定一个插件','error');
	}
	if(intval($postdata['days'])<1){
		exi('天数必须大于0','error');
	}
	$data=array(
		'title'=>trim($postdata['title']),
		'desc'=>trim($postdata['desc']),
		'images'=>ijson_encode($postdata['images']),
		'logo'=>trim($postdata['logo']),
		'tags'=>trim($postdata['tags']),
		'pid'=>intval($postdata['pid']),
		'price'=>trim($postdata['price']),
		'type'=>intval($postdata['type']),
		'star'=>intval($postdata['star']),
		'status'=>intval($postdata['status']),
		'tabletype'=>intval($postdata['tabletype']),
		'days'=>intval($postdata['days']),
	);	
	$id=intval($postdata['id']);
	if($id){
		pdo_update('core_open_plugin',$data,array('id'=>$id));
	}else{	
		$data['createtime']=TIMESTAMP;
		$data['opentype']='wxwork';
		pdo_insert('core_open_plugin',$data);
	}
	exi('操作成功！','','goback');
}
if($_RQ['op']=='bindkey'){
	//设置小程序支付参数
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		if(!$id){
			exi('请先选择要设置的应用！','error');
		}
		if(!$post['suite_id']){
			exi('应用ID不能为空','error');
		}
		if(!$post['suite_secret']){
			exi('应用secret不能为空','error');
		}
		$appid=pdo_getcolumn('core_open_plugin',array('suite_id'=>$post['suite_id']),'id');
		if($appid && $appid!=$id){
			exi('其他应用已经添加了本suite_id，应用ID不能重复！','error');
		}
		$data=array(
			'suite_id'=>$post['suite_id'],
			'suite_secret'=>$post['suite_secret'],
			'isbindopen'=>1,
		);
		pdo_update('core_open_plugin',$data,array('id'=>$id));
		exi('设置成功！');
	}else{
		$id=intval($_RQ['id']);
		if(!$id){
			exi('请先选择要设置的应用！','error','list');
		}
		$item=pdo_get('core_open_plugin',array('id'=>$id),array('id','title','suite_id','suite_secret'));
		$return['item']=$item;
		$return['htmls']=array(
			'type'=>'edit',
			'desc'=>'绑定企业微信应用参数',
			'edit'=>array(
				array('type'=>'string','name'=>'title','title'=>'应用名称','read'=>true),
				array('type'=>'string','name'=>'suite_id','title'=>'应用ID','help'=>'https://open.work.weixin.qq.com/ 创建应用后可获取；以ww或wx开头应用id（对应于旧的以tj开头的套件id）'),
				array('type'=>'string','name'=>'suite_secret','title'=>'应用secret','help'=>'https://open.work.weixin.qq.com/ 创建应用后可获取；'),
			),
		);
		exi($return);
	}
}
if($_RQ['op']=='openkey'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择应用！','error','list');
	}
	$item=pdo_get('core_open_plugin',array('id'=>$id),array('id','pid','title','suite_id','suite_secret'));
	$open=core_setting('work_weixin');
	$item['token']=$open['token'];
	$item['aeskey']=$open['aeskey'];
	$plugin_name=pdo_getcolumn('core_plugins',array('id'=>$item['pid']),'name');
	$wxwork_api=SITEROOT.'api/wxwork_api.php?pid='.$id;
	$item['index_url']=manage_url($plugin_name.'/basic.module_home/qyopen_index/corpid=$CORPID$',true);
	$item['domain']=$_SERVER['HTTP_HOST'];
	$item['set_url']=manage_url($plugin_name.'/basic.module_home/qyopen_set/corpid=$CORPID$',true);
	$item['data_url']=$wxwork_api;
	$item['send_url']=$wxwork_api;
	$item['wxwork_api']=$wxwork_api;
	$return['item']=$item;
	$return['htmls']=array(
			'type'=>'look',
			'desc'=>'配置开发信息',
			'look'=>array(
				array('type'=>'copy','name'=>'title','title'=>'应用名称','read'=>true,'help'=>'用户名称'),
				array('type'=>'copy','name'=>'index_url','title'=>'应用主页','help'=>'用户从企业微信工作台进入应用时将直接跳转到对应的主页URL'),
				array('type'=>'copy','name'=>'domain','title'=>'可信域名','help'=>'填写不带http:// 或https:// 头，可信域名必须通过ICP备案验证,设置可信域名后支持应用的OAuth2授权、JSSDK调用等（企业微信--应用管理--登录授权--授权完成回调域名--完成域名归属验证）'),
				array('type'=>'copy','name'=>'domain','title'=>'安装完成回调域名','help'=>'用户安装成功后可指定跳转至该域名的链接'),
				array('type'=>'copy','name'=>'set_url','title'=>'业务设置URL','help'=>'授权企业的管理员可从企业微信后台的应用详情页免登录直接跳转该链接进行应用配置'),
				array('type'=>'copy','name'=>'data_url','title'=>'数据回调URL','help'=>'用于接收托管企业微信应用的用户消息、进入应用事件、通讯录变更事件'),
				array('type'=>'copy','name'=>'send_url','title'=>'指令回调URL','help'=>'用于接收应用授权变更事件（应用添加、删除、修改）以及ticket参数，ticket说明详API接口说明'),
				array('type'=>'copy','title'=>'令牌（Token）','name'=>'token','help'=>'复制到企业微信对应应用，保持一直！' ),
				array('type'=>'copy','title'=>'消息加解密密钥(EncodingAESKey)','name'=>'aeskey','help'=>'复制到企业微信对应应用，保持一直！' ),
			),
	);
	exi($return);
}
if($_RQ['op']=='star'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('参数错误！','error');
	}
	$update=array();
	$post=get_postdata();
	if(isset($post['star'])){
		$update['star']=$post['star'];
	}
	if($update){
		pdo_update('core_open_plugin',$update,array('id'=>$id));
	}
	exi('操作成功！');
}
if($_RQ['op']=='set'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('参数错误！','error');
	}
	$update=array();
	$post=get_postdata();
	if(isset($post['isshow'])){
		$update['isshow']=intval($post['isshow']);
	}
	if(isset($post['isrecommand'])){
		$update['isrecommand']=intval($post['isrecommand']);
	}
	if($update){
		pdo_update('core_open_plugin',$update,array('id'=>$id));
	}
	exi('操作成功！');
}
if($_RQ['op']=='del'){
	$del=trim($_RQ['del'],';');
	if($del){
		$del=explode(';',$del);
	}else{
		$del=array();
	}
	if($_RQ['id']){
		$del[]=$_RQ['id'];
	}
	foreach($del as $id){
		$id=intval($id);
		if($id){
			pdo_delete('core_open_plugin',array('id'=>$id));
		}
	}
	exi('删除成功！');
}
if($_RQ['op']=='upgoods'){	
	$goods=pdo_getall('core_plugins',array('hide'=>0,'style'=>1),array('id','title','star','image','price','description','days'));
	foreach($goods as &$item){
		$count=pdo_getcolumn('core_open_plugin',array('pid'=>$item['id'],'opentype'=>'wxwork'),'id');
		if(!$count){
			$data=array(
				'title'=>trim($item['title']),
				'desc'=>trim($item['description']),
				'logo'=>trim($item['image']),
				'pid'=>intval($item['id']),
				'price'=>trim($item['price']),
				'star'=>intval($item['star']),
				'tabletype'=>1,
				'days'=>intval($item['days']),
			);	
			$data['createtime']=TIMESTAMP;
			$data['opentype']='wxwork';
			pdo_insert('core_open_plugin',$data);
		}
	}
	exi('一键添加应用成功！');
}